#include <stdio.h>
#include <string.h>
#include <unistd.h> // 包含 usleep 函数

/**
 * @brief 获取光标位置
 * @param row 指向存储行号的变量
 * @param col 指向存储列号的变量
 */
void get_cursor_position(int *row, int *col) {
    printf("\x1B[6n"); // 发送 VT100 控制序列以请求光标位置
    fflush(stdout);    // 确保输出立即发送到终端

    char response[32]; // 存储终端返回的响应
    int i = 0;

    // 读取终端返回的响应
    while (1) {
        char ch = getchar();
        if (ch == 'R') { // 响应以 'R' 结束
            response[i] = '\0'; // 字符串结束符
            break;
        }
        response[i++] = ch;
    }

    // 解析响应，格式为 "ESC [ <行> ; <列>"
    sscanf(response, "\x1B[%d;%d", row, col);
}

int main123() {
    int row, col;

    printf("请将光标移动到任意位置，按 Enter 键继续...\n");
    printf("\033[%d;%dH", 10 + 1, 8 + 1);
    getchar(); // 等待用户按下 Enter 键

    get_cursor_position(&row, &col); // 获取光标位置

    printf("光标当前位置：行 = %d, 列 = %d\n", row, col);

    return 0;
}